Skip to content

Fix/misc browser UI fixes#20883

Merged
caybro merged 14 commits into
release/2.38.xfrom
fix/misc-browser-ui-fixes
May 21, 2026
Merged

Fix/misc browser UI fixes#20883
caybro merged 14 commits into
release/2.38.xfrom
fix/misc-browser-ui-fixes

Conversation

@caybro
Copy link
Copy Markdown
Member

@caybro caybro commented May 15, 2026

What does the PR do

Best review commit by commit, in a nutshell:

Fixes #20443
Fixes #20601
Fixes #20683
Fixes #20656
Fixes #20967

Affected areas

Browser

Quality checklist

Screencapture of the functionality

Snímek obrazovky z 2026-05-14 16-21-19 Snímek obrazovky z 2026-05-14 23-39-49

Impact on end user

Better Mobile Browser UX

How to test

  • play around with the Browser on mobile

Risk

  • low

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR collects several Browser UI fixes plus minor StatusQ component tweaks. It updates sizing/spacing across the Mobile Browser per latest Figma (zooming address bar, find bar, bottom nav, tab/bookmark cards, settings menu icons), swaps the empty-tab illustration, fixes the favicon clipping in the address bar, ensures opening tabs/bookmarks no longer activates the address bar, propagates DevTools toggle state through a new devToolsToggled signal so the DevTools window's own close button works, and refactors StatusDialogHeader to use top-only corner radii.

Changes:

  • Mobile Browser UI scaling/sizing updates (toolbars, address/find bars, tab & bookmark cards, settings menu, header buttons).
  • Browser behavior fixes: opening tab/bookmark stays in view mode (addNewTab no longer auto-activates address bar; new addNewEmptyTab helper); DevTools close button properly disables DevTools via new devToolsToggled signal; StandardKey.Close now removes the current view via a new removeViewRequested signal.
  • StatusQ tweaks: StatusDialogHeader uses per-corner radii; StatusBaseButton uses pointerHoverHandler.hovered (instead of root.hovered) for text color and tooltip visibility, and the round-icon size now follows root.icon.width/height; StatusTextField non-hovered background uses primaryColor3.

Reviewed changes

Copilot reviewed 21 out of 27 changed files in this pull request and generated no comments.

Show a summary per file
File Description
ui/StatusQ/src/StatusQ/Popups/Dialog/StatusDialogHeader.qml Use per-corner radii instead of bottom-corner cover rectangle.
ui/StatusQ/src/StatusQ/Controls/StatusTextField.qml Use primaryColor3 as default (non-hovered) background.
ui/StatusQ/src/StatusQ/Controls/StatusBaseButton.qml Switch to pointerHoverHandler.hovered; round icon uses icon.width/height.
ui/StatusQ/src/assets/png/png.qrc Replace pepehand.png with new_tab.png.
ui/app/AppLayouts/Wallet/controls/DappsComboBox.qml Add configurable iconSize.
ui/app/AppLayouts/Browser/webview/BrowserWebViewContext.qml Wire onDevToolsToggled to persist setting.
ui/app/AppLayouts/Browser/views/EmptyWebPage.qml Use new tab illustration with new dimensions.
ui/app/AppLayouts/Browser/views/BrowserShortcutActions.qml Add removeViewRequested signal for StandardKey.Close.
ui/app/AppLayouts/Browser/popups/TabsBookmarksOverviewModal.qml Replace inline search field with SearchBox; resize cards/icons/font.
ui/app/AppLayouts/Browser/popups/MobileSettingsMenu.qml Extract SettingsListItem component with consistent asset size.
ui/app/AppLayouts/Browser/popups/BrowserSettingsMenu.qml Take browserSettings as required prop instead of using global.
ui/app/AppLayouts/Browser/panels/MobileAddressBar.qml Bump close button icon size; mark as round; tighten layout spacing.
ui/app/AppLayouts/Browser/panels/FindBar.qml Extract FindBarButton component; bump icon sizes.
ui/app/AppLayouts/Browser/panels/BrowserPortraitToolbar.qml Bump open-tabs counter font size.
ui/app/AppLayouts/Browser/panels/BrowserLandscapeToolbar.qml Resize DappsComboBox; bump open-tabs counter font size.
ui/app/AppLayouts/Browser/controls/BrowserHeaderButton.qml Resize button/icon and use icon.color instead of asset.color.
ui/app/AppLayouts/Browser/controls/BrowserAddressField.qml Use Theme.radius; enlarge favicon to 60% of height.
ui/app/AppLayouts/Browser/BrowserLayout.qml Add addNewEmptyTab, optional activate flag for new tabs; wire onRemoveViewRequested; pass browserSettings to settings menu.
ui/app/AppLayouts/Browser/adapters/WebViewAdapter.qml Emit devToolsToggled(false) instead of mutating devToolsEnabled.
ui/app/AppLayouts/Browser/adapters/LazyWebViewAdapter.qml Forward onDevToolsToggled from inner view.
ui/app/AppLayouts/Browser/adapters/AbstractWebView.qml Declare devToolsToggled(bool enabled) signal.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@status-im-auto
Copy link
Copy Markdown
Member

status-im-auto commented May 15, 2026

Jenkins Builds

Click to see older builds (81)
Commit #️⃣ Finished (UTC) Duration Platform Result
✔️ d6cc151 1 2026-05-15 11:00:52 ~7 min tests/nim 📄log
✔️ d6cc151 1 2026-05-15 11:04:13 ~11 min ios/aarch64 📱ipa 📲
✔️ d6cc151 1 2026-05-15 11:04:34 ~11 min android/arm64 🤖apk 📲
✔️ d6cc151 1 2026-05-15 11:06:14 ~12 min tests/ui 📄log
✔️ d6cc151 1 2026-05-15 11:07:08 ~13 min macos/aarch64 🍎dmg
✔️ d6cc151 1 2026-05-15 11:11:11 ~18 min linux/x86_64 📦tgz
✔️ d6cc151 1 2026-05-15 11:16:45 ~23 min windows/x86_64 💿exe
✖️ d6cc151 11260 2026-05-15 11:29:05 ~17 min tests/e2e 📊rpt
✔️ d6cc151 3218 2026-05-15 11:44:18 ~27 min tests/e2e-windows 📊rpt
✖️ d6cc151 3233 2026-05-15 12:40:47 ~1 hr 36 min tests/e2e-android 📦pkg
✔️ 50a4cd5 2 2026-05-18 15:08:56 ~7 min tests/nim 📄log
✔️ 50a4cd5 2 2026-05-18 15:11:15 ~10 min android/arm64 🤖apk 📲
✔️ 50a4cd5 2 2026-05-18 15:13:38 ~12 min macos/aarch64 🍎dmg
✔️ 50a4cd5 2 2026-05-18 15:13:45 ~12 min tests/ui 📄log
✔️ 50a4cd5 2 2026-05-18 15:13:45 ~12 min ios/aarch64 📱ipa 📲
✔️ 50a4cd5 2 2026-05-18 15:18:29 ~17 min linux/x86_64 📦tgz
✔️ 50a4cd5 2 2026-05-18 15:23:33 ~22 min windows/x86_64 💿exe
✖️ 50a4cd5 11289 2026-05-18 15:38:28 ~19 min tests/e2e 📊rpt
✔️ 50a4cd5 3243 2026-05-18 15:43:39 ~20 min tests/e2e-windows 📊rpt
✖️ 50a4cd5 3269 2026-05-18 16:21:59 ~1 hr 10 min tests/e2e-android 📦pkg
0445b78 3 2026-05-18 22:51:43 ~5 min ios/aarch64 📄log
0445b78 3 2026-05-18 22:52:07 ~6 min macos/aarch64 📄log
✔️ 0445b78 3 2026-05-18 22:54:57 ~9 min tests/nim 📄log
✔️ 0445b78 3 2026-05-18 22:57:03 ~11 min android/arm64 🤖apk 📲
✔️ 0445b78 3 2026-05-18 23:00:10 ~14 min tests/ui 📄log
✔️ 0445b78 3 2026-05-18 23:04:21 ~18 min linux/x86_64 📦tgz
✔️ 0445b78 3 2026-05-18 23:08:22 ~22 min windows/x86_64 💿exe
✔️ 0445b78 11298 2026-05-18 23:21:02 ~16 min tests/e2e 📊rpt
✔️ 0445b78 3251 2026-05-18 23:24:04 ~15 min tests/e2e-windows 📊rpt
✖️ 0445b78 3275 2026-05-19 00:46:56 ~1 hr 49 min tests/e2e-android 📦pkg
00e3ccc 4 2026-05-19 07:43:01 ~5 min ios/aarch64 📄log
✔️ 00e3ccc 4 2026-05-19 07:45:35 ~8 min tests/nim 📄log
✔️ 00e3ccc 4 2026-05-19 07:49:01 ~11 min tests/ui 📄log
00e3ccc 5 2026-05-19 07:52:05 ~5 min ios/aarch64 📄log
✔️ 00e3ccc 4 2026-05-19 07:54:29 ~17 min linux/x86_64 📦tgz
✔️ 00e3ccc 4 2026-05-19 08:01:12 ~24 min windows/x86_64 💿exe
✔️ 00e3ccc 11301 2026-05-19 08:15:45 ~21 min tests/e2e 📊rpt
✖️ 00e3ccc 3253 2026-05-19 08:18:10 ~16 min tests/e2e-windows 📊rpt
✔️ 00e3ccc 4 2026-05-19 08:20:13 ~43 min android/arm64 🤖apk 📲
00e3ccc 6 2026-05-19 08:23:56 ~5 min ios/aarch64 📄log
✖️ 00e3ccc 3279 2026-05-19 10:04:23 ~1 hr 44 min tests/e2e-android 📦pkg
00e3ccc 6 2026-05-19 16:19:20 ~6 min macos/aarch64 📄log
00e3ccc 7 2026-05-19 16:19:41 ~6 min ios/aarch64 📄log
✔️ bea5d7f 5 2026-05-19 23:09:51 ~9 min tests/nim 📄log
✔️ bea5d7f 5 2026-05-19 23:11:21 ~10 min android/arm64 🤖apk 📲
✔️ bea5d7f 8 2026-05-19 23:12:19 ~11 min ios/aarch64 📱ipa 📲
✔️ bea5d7f 7 2026-05-19 23:15:23 ~14 min macos/aarch64 🍎dmg
✔️ bea5d7f 5 2026-05-19 23:18:45 ~17 min linux/x86_64 📦tgz
✔️ bea5d7f 5 2026-05-19 23:26:08 ~25 min windows/x86_64 💿exe
✔️ bea5d7f 11326 2026-05-19 23:35:32 ~16 min tests/e2e 📊rpt
✔️ bea5d7f 3280 2026-05-19 23:43:40 ~17 min tests/e2e-windows 📊rpt
✖️ bea5d7f 3300 2026-05-20 00:19:04 ~1 hr 7 min tests/e2e-android 📦pkg
✔️ bea5d7f 5 2026-05-20 00:19:15 ~1 hr 18 min tests/ui 📄log
✔️ cde4cf4 8 2026-05-20 09:22:19 ~17 min macos/aarch64 🍎dmg
✔️ cde4cf4 6 2026-05-20 09:23:57 ~19 min android/arm64 🤖apk 📲
✔️ cde4cf4 6 2026-05-20 09:26:21 ~21 min tests/nim 📄log
✔️ cde4cf4 6 2026-05-20 09:28:57 ~24 min linux/x86_64 📦tgz
✔️ cde4cf4 6 2026-05-20 09:29:08 ~24 min tests/ui 📄log
✔️ cde4cf4 10 2026-05-20 09:35:37 ~14 min ios/aarch64 📱ipa 📲
✔️ cde4cf4 11337 2026-05-20 10:01:26 ~32 min tests/e2e 📊rpt
✖️ cde4cf4 3322 2026-05-20 11:20:51 ~1 hr 56 min tests/e2e-android 📦pkg
✔️ cde4cf4 7 2026-05-20 11:33:32 ~40 min windows/x86_64 💿exe
✖️ cde4cf4 3289 2026-05-20 12:02:34 ~28 min tests/e2e-windows 📊rpt
✔️ 4389f3f 11 2026-05-20 14:19:22 ~10 min ios/aarch64 📱ipa 📲
✔️ 4389f3f 7 2026-05-20 14:34:36 ~25 min tests/nim 📄log
✔️ 4389f3f 8 2026-05-20 14:43:57 ~34 min windows/x86_64 💿exe
✔️ 4389f3f 7 2026-05-20 14:57:42 ~48 min tests/ui 📄log
✔️ 4389f3f 10 2026-05-20 14:59:48 ~11 min macos/aarch64 🍎dmg
✖️ 4389f3f 3301 2026-05-20 15:08:45 ~24 min tests/e2e-windows 📊rpt
✔️ 4389f3f 8 2026-05-20 21:01:31 ~15 min linux/x86_64 📦tgz
✔️ 4389f3f 11362 2026-05-20 21:19:26 ~17 min tests/e2e 📊rpt
✔️ 83c1a9d 8 2026-05-20 23:34:49 ~9 min tests/nim 📄log
✔️ 83c1a9d 11 2026-05-20 23:36:31 ~10 min android/arm64 🤖apk 📲
✔️ 83c1a9d 12 2026-05-20 23:36:57 ~11 min ios/aarch64 📱ipa 📲
✔️ 83c1a9d 11 2026-05-20 23:39:06 ~13 min macos/aarch64 🍎dmg
✔️ 83c1a9d 8 2026-05-20 23:39:30 ~13 min tests/ui 📄log
✔️ 83c1a9d 9 2026-05-20 23:44:03 ~18 min linux/x86_64 📦tgz
✔️ 83c1a9d 9 2026-05-20 23:52:23 ~26 min windows/x86_64 💿exe
✔️ 83c1a9d 11364 2026-05-21 00:00:53 ~16 min tests/e2e 📊rpt
✖️ 83c1a9d 3310 2026-05-21 00:08:02 ~15 min tests/e2e-windows 📊rpt
✖️ 83c1a9d 3341 2026-05-21 00:13:27 ~36 min tests/e2e-android 📦pkg
Commit #️⃣ Finished (UTC) Duration Platform Result
✔️ ddc0a6f 9 2026-05-21 09:52:37 ~8 min tests/nim 📄log
✔️ ddc0a6f 13 2026-05-21 09:54:31 ~10 min ios/aarch64 📱ipa 📲
✔️ ddc0a6f 9 2026-05-21 09:56:46 ~12 min tests/ui 📄log
✔️ ddc0a6f 12 2026-05-21 09:58:35 ~14 min macos/aarch64 🍎dmg
✔️ ddc0a6f 12 2026-05-21 10:08:08 ~24 min android/arm64 🤖apk 📲
✔️ ddc0a6f 11 2026-05-21 10:34:06 ~17 min linux/x86_64 📦tgz
✔️ ddc0a6f 11372 2026-05-21 10:53:32 ~19 min tests/e2e 📊rpt
✖️ ddc0a6f 3365 2026-05-21 11:42:04 ~1 hr 33 min tests/e2e-android 📦pkg
✔️ ddc0a6f 11 2026-05-21 12:03:39 ~22 min windows/x86_64 💿exe
✖️ ddc0a6f 3319 2026-05-21 13:07:45 ~1 hr 4 min tests/e2e-windows 📊rpt

Copy link
Copy Markdown
Contributor

@friofry friofry left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice!

@sunleos
Copy link
Copy Markdown
Collaborator

sunleos commented May 15, 2026

Tested APK build # 1

Summary:

Fixes #20443 - partially fixed. Logged bugs from 10-16 on the ticket
Fixes #20601 - Asked @Francesca-G to update the illustration on the ticket, plus explain how it should look for the dark mode
Fixes #20683 - can't figure out how to test it (I guess it is OK now :) )
Fixes #20656 - this one is completely fixed

@caybro caybro force-pushed the fix/misc-browser-ui-fixes branch from d6cc151 to 50a4cd5 Compare May 18, 2026 15:00
@caybro caybro force-pushed the fix/misc-browser-ui-fixes branch from 50a4cd5 to 0445b78 Compare May 18, 2026 22:45
@caybro caybro force-pushed the fix/misc-browser-ui-fixes branch 3 times, most recently from cde4cf4 to 4389f3f Compare May 20, 2026 14:08
Copy link
Copy Markdown
Collaborator

@sunleos sunleos left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tested the changes on Android 15

all looks good to me.

anything remaining will be handled in the other created tickets.

@caybro caybro force-pushed the fix/misc-browser-ui-fixes branch from 4389f3f to 83c1a9d Compare May 20, 2026 23:25
caybro added 14 commits May 21, 2026 11:40
- also size-optimize some browser PNGs using `optipng`

Fixes #20601
- we don't have an active WebView, so the abstract action wouldn't do
anything
…field

- make a distinction between opening a new tab for viewing, and an empty
one (where we actually do want to start entering the URL)

Fixes #20656
- don't break the settings binding, and update the internal action
properly
- don't take the value from `d.iconSize` which is precomputed, make it
possible to set it properly via `icon.width/height`
…ltips and text color

- that way we don't get spurious hover events on touch
- in Qt 6.11, we can set the radius on an individual rectangle corner,
no need to create an extra fake Rectangle
- no need to set the border here at all

Fixes #20683
- increase font sizes and spacings
- use default corner radius
- element sizes upped to 44, icon sizes to 28
- use the standard SearchBox component
- increase the webpage preview size

Fixes #20443
- adjust the flags to make it more privacy oriented
- we `freeze` the native WebView when there's an active popup/modal

Fixes #20967
Copy link
Copy Markdown
Member

@micieslak micieslak left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I spotted some strange behavior regarding changed virtual keyboard behavior. Observed on both Android 15 and 16, not present on earlier builds.

After opening the keyboard, some strange scrolling behavior appears - there is blank area below the initial cut-off edge. It's especially problematic when after triggering vkbd, the input is covered by keyboard and it's necessary to scroll. Then after scrolling the input is still invisible bc it's under that blank area:

Screen_Recording_20260521_135905_Status.Debug.mp4

Other issue is the fact that tab bar and tool bar on the bottom are visible after triggering vkbd and consume precious space on the screen. Those are probably not necessary then.

@caybro
Copy link
Copy Markdown
Member Author

caybro commented May 21, 2026

I spotted some strange behavior regarding changed virtual keyboard behavior. Observed on both Android 15 and 16, not present on earlier builds.

After opening the keyboard, some strange scrolling behavior appears - there is blank area below the initial cut-off edge. It's especially problematic when after triggering vkbd, the input is covered by keyboard and it's necessary to scroll. Then after scrolling the input is still invisible bc it's under that blank area:

Screen_Recording_20260521_135905_Status.Debug.mp4

Ah ok, other sections are ok? If it's just about the Browser section, then this needs to be probably addressed in the native WebView component, CC @friofry

@micieslak
Copy link
Copy Markdown
Member

I spotted some strange behavior regarding changed virtual keyboard behavior. Observed on both Android 15 and 16, not present on earlier builds.
After opening the keyboard, some strange scrolling behavior appears - there is blank area below the initial cut-off edge. It's especially problematic when after triggering vkbd, the input is covered by keyboard and it's necessary to scroll. Then after scrolling the input is still invisible bc it's under that blank area:
Screen_Recording_20260521_135905_Status.Debug.mp4

Ah ok, other sections are ok? If it's just about the Browser section, then this needs to be probably addressed in the native WebView component, CC @friofry

Yeah, it looks like WebView's internal problem. Other sections are fine.

@caybro caybro merged commit 652017b into release/2.38.x May 21, 2026
11 of 13 checks passed
@caybro caybro deleted the fix/misc-browser-ui-fixes branch May 21, 2026 18:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

7 participants